|
 |
Applicazioni Software |
PROGETTO n° 06 - 6/12
[93 di 166] |
 | La lettura del dato a 8
bit obbliga il processore a
rimanere in polling (interrogazione) sul
Registro d'ingresso
0379H/0279H,
senza poter fare altro se non verificare l'eventuale
variazione del
dato acquisito dal
convertitore analogico digitale. |
 | Si rende dunque necessaria una
struttura di tipo REPEAT... UNTIL
(con riferimento al Pascal);
in Assemby si realizza con un loop,
cioè una sequenza di istruzioni ripetuta ad oltranza,
compresa tra quella identificata
dall'etichetta xxx0
e
la
JZ xxx0. |
 | Naturalmente dentro il
ciclo deve esserci un artificio che dia la possibilità di terminare il
processo di
conversione e lettura; in caso contrario il programma non avrebbe mai fine.. |
 | Il nostro programma prevede
una via d'uscita non appena viene premuto un
tasto qualunque, anche se (come vedremo)
da per scontata la presenza della periferica sulla parallela. |
 | La casella di testo
mostra in sintesi il
main loop
del progetto; si notano le 3 fasi fondamentali:
 | la gestione della
conversione digitale
del segnale fornito sull'ingresso
analogico, la
tensione
presente sul cursore di un
potenziometro |
 | la
lettura degli 8 bit
generati dal convertitore
ADC0804,
tramite il
multiplexer 74LS157 |
 | la visualizzazione del risultato, con l'aiuto della Procedura
Byt2Asc
e della Macro
M_CURSOR,
entrambe appartenenti alle mie 2 librerie,
Giobe.MAC
e
Giobe.LIB/Giobe.ASM;
la Procedura
converte il valore esadecimale
a 8 bit, letto dalla porta parallela in 2 caratteri Ascii e
lo pone a video in posizione centrale, al
fine di mostrare in tempo reale l'effetto prodotto da ogni movimento impresso sul perno del
potenziometro. |
|
 | Il codice viene
ripetuto
in continuazione, fino a quando viene
premuto
un tasto qualunque.
 |
la possibilità di porre fine all'esecuzione
ciclica di queste istruzioni è affidata alla
Funzione 01H dell'INT 16H,
che provvede
appunto alla lettura della
tastiera: se nessun tasto viene premuto la
Funzione lascia la flag di Zero a 0
e il loop viene automaticamente ripetuto |
 | se si
preme
un tasto qualunque
la
Funzione forza la flag di Zero a 1, il loop ha termine e
viene eseguita l'istruzione successiva a
JZ xxx0, cioè il
programma ha termine |
|
 | Nelle pagine seguenti prenderò in esame ogni dettaglio
delle 2 fasi di conversione e di
lettura. |
©
2001-2006 - Studio Tecnico
ing. Giorgio OBER
Tutti i diritti sono riservati
|